package com.day3_字符串_简单;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;

/**
 * 题目：字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
 * 比如，输入字符串"abcdefg"和数字2，该函数将返回左旋转两位得到的结果"cdefgab"。
 * 时间：58m
 * 日期:20220830
 * 空间复杂度：O(n)
 * 时间复杂度：O(n)
 */
class Solution1 {
    public String reverseLeftWords(String s, int n) {
        //法一：用额外空间的字符数组来存储左旋转后的字符串
//        int len=s.length();
//        char[] array=new char[len];
//        //赋值写法一
//        for(int i=0;i<len;i++){
//            if(i<n){
//                array[len-n+i]=s.charAt(i);
//            }
//            else {
//                array[i-n]=s.charAt(i);
//            }
//        }
//        String str=new String(array,0,len);
//        return str;

        //法二：使用StringBuffer,它只需要创建一个对象
        /*
        StringBuilder和StringBuffer的区别是

StringBuilder是线程不安全的，它的执行效率比StriingBuffer要高

StringBuffer是线程安全的，它的执行效率比StringBuilder要低
         */
        int len=s.length();
        StringBuilder str=new StringBuilder();
        for(int i=n;i<len;i++){
            str.append(s.charAt(i));
        }
        for(int i=0;i<n;i++){
            str.append(s.charAt(i));
        }
        return str.toString();

    }
}
public class 剑指Offer58左旋转字符串 {
    public static void main(String[] args) {
        String str1="abcdefg";
        Solution1 solu=new Solution1();
        System.out.println(solu.reverseLeftWords(str1,3));

    }



}
